#! /usr/bin/python3
# -*- coding:utf-8 -*- 
# file: wcx_stock.py
# author: wangchenxi
# mail: chinawangchenxi@gmail.com
# brief: 
# version: 0.1.00
# Create Time:2019-07-17 14:24:01
# Last Update: 2019-07-17 23时05分00秒

import time
import decimal
import hashlib

import requests


def get_sign(u, p, tp):
    md5 = hashlib.md5()
    s = '%s%s%s' % (u, p, tp)
    md5.update(s.encode('utf8'))
    return md5.hexdigest()


def send_message(phone_num, text):
    host_name = 'http://120.77.80.125:8888/'
    username = '13205383201'
    password = '13205383201'
    url = '%sv2sms.aspx' % (host_name)

    time_stamp = time.strftime('%Y%m%d%H%M%S')
    sign = get_sign(username, password, time_stamp)

    ret = requests.post(url, params={
        'action': 'send',
        'userid': '942',
        'timestamp': time_stamp,
        'sign': sign,
        'mobile': phone_num,
        'content': '%s 【%s】' %(text, 'malloc_new'),
        'sendTime': '',
        'extno': ''
    })
    print(ret.text)


def send_sell_success_message(sp, buyp, sellp):
    text = 'S s,advs:f_p:%s,b_p:%s,s_p:%s.' % (sp, buyp, sellp)
    send_message('13205383201', text)


def send_buy_sucess_message(sp, buyp, sellp):
    text = ' B s,advs:f_p:%s,b_p:%s,s_p:%s.' % (sp, buyp, sellp)
    send_message('13205383201', text)


if __name__ == '__main__':
    # 从数据库获取初始化值
    # 股票代码
    stock_no = '000830'
    # sign价格
    price_sign = decimal.Decimal('11.10')
    # 波动操作引子
    wave_factor = decimal.Decimal('0.1')

    buy_price = price_sign - wave_factor
    sell_price = price_sign + wave_factor

    keyname = '未知 名字 代码 当前价格 昨收 今开 成交量（手） 外盘 内盘 买一 买一量（手） 买二 买二量（手） 买三 买三量（手） 买四 买四量（手） 买五 买五量（手） 卖一 卖一量 卖二 卖二量 卖三 卖三量 卖四 卖四量 卖五 卖五量 最近逐笔成交 时间 涨跌 涨跌% 最高 最低 价格/成交量（手）/成交额 成交量（手） 成交额（万） 换手率 市盈率 不明确 最高 最低 振幅 流通市值 总市值 市净率 涨停价 跌停价'
    url_tmplate = 'http://qt.gtimg.cn/q=sz%s'
    url = url_tmplate % (stock_no)
    while True:
        ret = requests.get(url)
        ret = ret.text.strip()
        lv = ret.split('~')
        lk = keyname.split(' ')
        lindex = [i for i in range(0, 49)]
        ddst = dict(zip(lindex, zip(lk, lv)))
        l_tmp = ddst[29][1].split('|')
        l_price = [decimal.Decimal(i.split('/')[1]) for i in l_tmp]
        max_street_value = max(l_price)
        min_street_value = min(l_price)

        if max_street_value > sell_price:
            price_sign = sell_price
            buy_price = price_sign - wave_factor
            sell_price = price_sign + wave_factor
            send_sell_success_message(price_sign, buy_price, sell_price)
        elif min_street_value < buy_price:
            price_sign = buy_price
            buy_price = price_sign - wave_factor
            sell_price = price_sign + wave_factor
            send_buy_sucess_message(price_sign, buy_price, sell_price)
        break
